home *** CD-ROM | disk | FTP | other *** search
- #include "stat.h"
- #include "config.h"
- #include <Types.h>
-
- extern long gMudLibDirID;
- extern short gMudLibVolRef;
-
- int stat(char *fname, struct stat *buf) {
- Str255 pstr;
- CInfoPBRec pb;
- int i, len = strlen(fname);
-
- pstr[0] = len + 1; pstr[1] = ':';
- memcpy (&pstr[2], fname, len);
- for (i = 0; i < pstr[0]; i++) {
- if (pstr[i] == '/')
- pstr[i] = ':';
- }
- pb.hFileInfo.ioCompletion = NULL;
- pb.hFileInfo.ioNamePtr = pstr;
- pb.hFileInfo.ioFDirIndex = 0;
- pb.hFileInfo.ioVRefNum = gMudLibVolRef;
- pb.hFileInfo.ioDirID = gMudLibDirID;
- pb.hFileInfo.ioResult = noErr;
- if (PBGetCatInfo(&pb, false) != noErr) {
- errno = ENOENT;
- return -1;
- }
- buf->st_mode = S_IFREG;
- if (pb.hFileInfo.ioFlAttrib & 0x10)
- buf->st_mode = S_IFDIR;
- buf->st_size = pb.hFileInfo.ioFlLgLen;
- buf->st_mtime = pb.hFileInfo.ioFlMdDat;
- return 0;
- }
-
- Boolean touchup(char *filename) {
- char name[256];
- ParamBlockRec paramBlock;
-
- name[0] = strlen(filename);
- memcpy(&name[1], filename, name[0]);
-
- paramBlock.fileParam.ioNamePtr = &name;
- paramBlock.fileParam.ioVRefNum = 0;
- paramBlock.fileParam.ioFVersNum = 0;
- paramBlock.fileParam.ioFDirIndex = 0;
-
- if (PBGetFInfo(¶mBlock, false) == noErr) {
-
- GetDateTime(¶mBlock.fileParam.ioFlMdDat);
- if (PBSetFInfo(¶mBlock, false) == noErr)
- return true;
- }
- return false;
- }
-